package com.chinairi.mall.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chinairi.mall.controller.viewobject.ApproveDbIdVO;
import com.chinairi.mall.controller.viewobject.ServiceShelfVO;
import com.chinairi.mall.model.ServiceShelf;
import com.chinairi.mall.service.modelobject.HomeServiceMO;
import com.chinairi.mall.service.modelobject.ServiceTypeShopMO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 五大服务上架功能以及服务商对服务的维护功能， 服务类
 * </p>
 *
 * @author Webgasd
 * @since 2020-09-16
 */
public interface IServiceShelfService extends IService<ServiceShelf> {

    /**
     * 根据店铺主键获取店铺中的服务产品信息
     * @param serviceShelf 店铺主键
     * @return list
     */
    List<ServiceShelf> getListByCsDbId(ServiceShelf serviceShelf);

    /**
     * 根据主键获取具体服务商品信息
     * @param serviceDbId 主键
     * @return ServiceShelfVO
     */
    ServiceShelfVO getByDbId(String serviceDbId);

    /**
     * 添加服务商品
     * @param serviceShelfVO 服务商品详情
     */
    void add (ServiceShelfVO serviceShelfVO);

    /**
     * 更新服务商品信息
     * @param serviceShelfVO 服务商品信息
     */
    void updateAll (ServiceShelfVO serviceShelfVO);

    /**
     * 根据服务大类获取信息
     * @param serviceType
     * @param serviceClass
     * @return
     */
    Map<String, List<ServiceTypeShopMO>> getMap(String serviceType, String serviceClass);

    /**
     * 批量提交商品审核
     * @param approveDbIdVoList
     */
    void updateStatus(List<ApproveDbIdVO> approveDbIdVoList);

    /**
     * 服务商品搜索列表
     * 搜索项
     * csDbid               精确搜索   店铺id
     * ssServiceTypeDbid    精确搜索   服务大类编码
     * ssServiceTypeName    模糊搜索   服务大类名称
     * ssServiceClassDbid   精确搜索   服务小类编码
     * ssServiceClassName   模糊搜索   服务小类名称
     * @param homeServiceMo
     * @return
     */
    List<HomeServiceMO> getHomeService(HomeServiceMO homeServiceMo);

    /**
     * 获取店铺服务列表
     * @param serviceShelf
     * @return
     */
    List<ServiceShelf> getServiceListByCsDbId(ServiceShelf serviceShelf);

    /**
     * 删除服务
     * @param serviceDbid
     */
    void deleteById(String serviceDbid);

    /**
     * 获取用户须知
     * @param serviceType 服务大类id
     * @param serviceClassIds 服务小类id
     */
    List<ServiceShelf> getNoticeByCsId(String serviceType, List<String> serviceClassIds);

    /**
     * 获取用户须知
     * @param serviceType 服务大类id
     * @param serviceClassIds 服务小类id
     */
    List<ServiceShelf> getPriceRuleByCsId(String serviceType, List<String> serviceClassIds);
}
